// 为什么要封装所有的 - 接口请求方法
// 好处1: 统一管理/统一修改(假如以后url地址后台变了, 直接修改即可, 而且逻辑js里直接引用这里的方法, 所以这里改了, 那么逻辑代码里也会被改变)
// 好处2: 可以统一加入一些加载器....
axios.defaults.baseURL = "http://123.57.109.30:3007"
// 添加响应拦截器(可以在触发成功回调函数之前, 搞点事情 - 统一都有弹窗)
axios.interceptors.response.use(function (response) {// 响应成功200,触发这里
    var layer = layui.layer;
    layer.msg(response.data.message);
    //响应拦截器 - - 写上判断 - 防止错误的信息 - 进入到逻辑页面的成功的回调函数中
    if (response.data.status == 1) {
         return Promise.reject(response.data.message,{id:"唯一"});
    }
    // 上面进不去if, 就代表成功的状态为0, 返回正常的数据
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
        return Promise.reject(error);
        
});
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  if (config.url.startsWith("/my")) {
    config.headers["Authorization"] = sessionStorage.getItem("token");
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});
  // 为什么使用const: 因为别人要声明这个变量, 别人就报错 - 这里是 个网络请求的方法(不允许被覆盖)
// 传进来的形参(要给后台的参数名和值)
// 传进来的第二个参数, 是一个函数体 (因为这个文件里只关心请求的url和方式/参数), 逻辑代码(例如铺设页面, 应该还在原来的逻辑的.js文件里)

//注册
const registerAPI = (arg, fn) => axios({
    url: "/api/reguser",
    method: "POST",
    data:arg
}).then(fn)// axios请求成功就会调用外部的函数体执行, 传参

//登录
const loginAPI = (arg, fn) => axios({
    url: "/api/login",
    method: "POST",
    data: arg
}).then(fn);
// const loginAPI = function(arg, fn){  axios({url: "/api/login",
 //   method: "POST",
  //  data: arg
//}).then(fn);}

//文章管理添加类别
const addCategoryAPI = (data, fn) => axios({
  method: 'post',
  url: "/my/article/addcates",
  data
}).then(fn)

//文章管理页面
const categoryLoadApi = (fn) => axios({
  method: 'get',
  url: "/my/article/cates",

}).then(fn)

//删除文章
const categoryDelApi = (id, fn) => axios({
  method: 'get',
  url: "/my/article/deletecate/" + id,

}).then(fn)


//编辑文章
const changeCategoryAPI = (a, fn) => axios({
  method: 'POST',
  data: a,
  url: "/my/article/updatecate" ,

}).then(fn)

//个人中心 -- 获取个人信息
const getUserInfoAPI = (a, fn) => axios({
  method: 'GET',
  url: "/my/userinfo" ,
  data: a
}).then(fn)

//个人中心 -- 更新个人信息
const upUserInfoAPI = (a, fn) => axios({
  method: 'POST',
  url: "/my/userinfo" ,
  data:a
}).then(fn)

//个人中心 --重置修改密码
const rePassAPI = (a, fn) => axios({
  method: 'POST',
  url: "/my/updatepwd" ,
  data:a
}).then(fn)